{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "train = pd.read_csv(\"train.csv\")\n",
    "test = pd.read_csv(\"test.csv\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          714 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        204 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "print(train.info())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>714.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "      <td>891.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.383838</td>\n",
       "      <td>2.308642</td>\n",
       "      <td>29.699118</td>\n",
       "      <td>0.523008</td>\n",
       "      <td>0.381594</td>\n",
       "      <td>32.204208</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>257.353842</td>\n",
       "      <td>0.486592</td>\n",
       "      <td>0.836071</td>\n",
       "      <td>14.526497</td>\n",
       "      <td>1.102743</td>\n",
       "      <td>0.806057</td>\n",
       "      <td>49.693429</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.420000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>223.500000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.125000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>7.910400</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>446.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>28.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>14.454200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>668.500000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>38.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>31.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>891.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>80.000000</td>\n",
       "      <td>8.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>512.329200</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       PassengerId    Survived      Pclass         Age       SibSp  \\\n",
       "count   891.000000  891.000000  891.000000  714.000000  891.000000   \n",
       "mean    446.000000    0.383838    2.308642   29.699118    0.523008   \n",
       "std     257.353842    0.486592    0.836071   14.526497    1.102743   \n",
       "min       1.000000    0.000000    1.000000    0.420000    0.000000   \n",
       "25%     223.500000    0.000000    2.000000   20.125000    0.000000   \n",
       "50%     446.000000    0.000000    3.000000   28.000000    0.000000   \n",
       "75%     668.500000    1.000000    3.000000   38.000000    1.000000   \n",
       "max     891.000000    1.000000    3.000000   80.000000    8.000000   \n",
       "\n",
       "            Parch        Fare  \n",
       "count  891.000000  891.000000  \n",
       "mean     0.381594   32.204208  \n",
       "std      0.806057   49.693429  \n",
       "min      0.000000    0.000000  \n",
       "25%      0.000000    7.910400  \n",
       "50%      0.000000   14.454200  \n",
       "75%      0.000000   31.000000  \n",
       "max      6.000000  512.329200  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',\n",
       "       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### visualization"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from pylab import *\n",
    "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
    "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '人数')"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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1q1b1i0gM9t+5QqAJyNiWfG48e5HnYrnjeu7r2mmbAsRMb1xpcXa2mansWZ78G+U+/c3s+1XrgD4oaTDi3uOfoR0g46BxWuHk1ZMXNBM2S5j/fr1LW9kZlZF5RoD+ArphhYirWN+J/BocTeioaQxgmimbIf0HHf3ju5iC4u/8eFt2m7jxo3U1NQwcOBAHnzwQTp06MDxxx/PvHnz2LhxI23btkUSM2fOZMWKFdTX13PVVVdx0UUXMXr0aI455pidWm8zs21RlgCIiN+SZgK9TtIg0t2HromIVVsra23q6+sZM2YMHTp0YOHChZx66qkAPPvss5x88smsX7+eKVOm0KVLF1599VUaGhpYt24dL774Ik888QTXXnstAJs2baJNG1+WYQbAhN2rXYPymfCPc6ir2FIQEbGSzbN+tlrW2nTt2pUbb7yRgw46iEsvvZRrrrmGmpoaLr/8csaNG8cee+zB0qVLufDCC1m2bBkbNmzggAMOYM6cOSxbtoxjjz2W5557jquvvpqzzjqr2l/HzDLSatYC+kf21FNPcdJJJzF27FjatWvHpk2beOSRRzj00ENZtGgRF198McOGDaNz586sWbOGlStXMmfOHCZNmsSRRx7J9773PR/8zazi3Oewg5577jmmTZvGWWedRceOHRk9ejSDBw9m4cKF3HLLLdx7773U19cze/ZsVq5cyQ033MDvf/97+vbty1NPPcWiRYvo27dvtb+GmWXILYAd1Lt3b2bOnMn5558PwMyZM1mwYAEnn3wy9913H23atEESEydO5FOf+hT77bcfS5Ys4c4772TUqFFs2LCBsWPHVvlbmFmO3ALYQc8++yxnnHEGX/3qV1m3bh01NTVMmzaN888/n+985zu0adOG2267jUsuuYSzzjqLkSNHcuyxx3LHHXfQv39/fv7zn9O7d+9qfw0zy9Au1QLY1mmbO1OfPn2YPXs2Tz75JL169eLmm2+mc+fOTJw4kdNOO43u3bszfPhwxowZw6xZs2hoaGDcuHE8//zzTJs2jY0bNzJ79mxOOeWUitfdzPLmFsAOksTkyZOZOnUqo0aN4u677+Zb3/oWkrj99tt5/PHHWbduHffccw+XX345dXV1PP3004wYMYLrr7+euXPnMnXqVH784x9X+6uYWWYUEdWuwzapq6uLpncEW7hwIYccckiVarRj1q9fT/v2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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "survived_0=train.Pclass[train.Survived==0].value_counts()\n",
    "survived_1=train.Pclass[train.Survived==1].value_counts()\n",
    "df=pd.DataFrame({'获救':survived_1,'未获救':survived_0})\n",
    "df.plot(kind='bar',stacked=True)\n",
    "plt.title('各船舱乘客获救情况')\n",
    "plt.xlabel('船舱等级')\n",
    "plt.ylabel('人数')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0, 0.5, '人数')"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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53PzzTcDsHXrVtq1c4fMyuz6A6pdQdtx/W5PW+51HAB7qHv37tx2220ceeSRXHXVVUyZMoWamhquvvpqJk2axIEHHsjy5cu57LLLePXVV9m0aROHH3449fX1vPrqq5xyyim8+OKL3HTTTVx44YXV/jhmlhEHQCt4/vnnOeOMM5g4cSIdOnRg69atPPnkkxx99NEsWbKEK664grPOOouuXbuybt06Vq9eTX19PZMnT+bEE0/k29/+tnf+ZlZxHnPYQy+++CJ33XUXF154IZ07d2bcuHEMHz6cxYsXc9999zFnzhxWrVrFrFmzWL16Nbfeeiu/+93vGDBgAM8//zxLlixhwIAB1f4YZpYh9wD2UL9+/ZgxYwaXXHIJADNmzGDhwoWcffbZPProo7Rr1w5J3HDDDZx//vm8973vZdmyZTz88MOMGTOGTZs2MXHixCp/CjPLkXsAe+iFF17g3HPP5cYbb2TDhg3U1NRw1113cckllzB16lTatWvH9OnTufLKK7nwwgsZPXo0p5xyCt///vc5/vjj+eUvf0m/fv2q/THMLENtqgewq6dttqb+/fsza9YsnnvuOfr27cu9995L165dueGGGxg7diw9e/Zk5MiRjB8/npkzZ7JlyxYmTZrESy+9xF133cXmzZuZNWsW55xzTsVrN7O8uQewhyRx++23c+eddzJmzBhmz57N17/+dSTx4IMP8swzz7BhwwYeeeQRrr76aurq6li0aBGjRo3illtuYe7cudx555089NBD1f4oZpYZRUS1a9gldXV10fgvgi1evJijjjqqShXtmY0bN9KxY0cgLeoWEe/4OoB9+d/BKszXAbSefeQ6AEkLI6KuqW1taghoX9Kw84fUi/CaPmZWaR4CMjPLlAPAzCxTDoAq8oqhZlZNDoBWds011/DII4+8rX3z5s0ADBkyhA0bNgAwdOjQbdtKJ+NnzJjB1KlTufHGGwG4/PLLefrpp8tdupllpm1NArf2GQ67OMt/7bXX8qtf/QpJLFmyhMcee4xbb72VDRs2cOmllzJ06NAWVwydNm0avXv35o033vCqoWZWEW0rAKpk8uTJ225ff/31DBo0iDPPPHOHx7S0YijA8uXLueKKK7xqqJlVhANgDzUM7dTUNP1PuXHjRmpqalpcMfSGG26gW7duXjXUzCrGAbCH5syZw+23344kVq9ezbPP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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "survived_0=train.Sex[train.Survived==0].value_counts()\n",
    "survived_1=train.Sex[train.Survived==1].value_counts()\n",
    "df2=pd.DataFrame({'获救':survived_1,'未获救':survived_0})\n",
    "df2.plot(kind='bar',stacked=True)\n",
    "plt.title('男女乘客获救情况')\n",
    "plt.xlabel('性别')\n",
    "plt.ylabel('人数')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig=figure()\n",
    "plt.subplot(141)\n",
    "train.Survived[train.Sex=='female'][train.Pclass==3].value_counts().sort_index().plot(kind='bar',color='pink')\n",
    "plt.xticks(arange(2),['未获救','获救'])\n",
    "plt.yticks(arange(0,301,50))\n",
    "plt.legend(['低等舱/女生'],loc='best')\n",
    "plt.subplot(142)\n",
    "train.Survived[train.Sex=='female'][train.Pclass!=3].value_counts().sort_index().plot(kind='bar',color='hotpink')\n",
    "plt.xticks(arange(2),['未获救','获救'])\n",
    "plt.yticks(arange(0,301,50))\n",
    "plt.legend(['高等舱/女生'],loc='best')\n",
    "plt.subplot(143)\n",
    "train.Survived[train.Sex=='male'][train.Pclass==3].value_counts().sort_index().plot(kind='bar',color='lightsteelblue')\n",
    "plt.xticks(arange(2),['未获救','获救'])\n",
    "plt.yticks(arange(0,301,50))\n",
    "plt.legend(['低等舱/男生'],loc='best')\n",
    "plt.subplot(144)\n",
    "train.Survived[train.Sex=='male'][train.Pclass!=3].value_counts().sort_index().plot(kind='bar',color='cornflowerblue')\n",
    "plt.xticks(arange(2),['未获救','获救'])\n",
    "plt.yticks(arange(0,301,50))\n",
    "plt.legend(['高等舱/男生'],loc='best')\n",
    "fig.tight_layout()\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig=figure()\n",
    "fig.set(alpha=0.2)\n",
    "\n",
    "plt.subplot(341)\n",
    "train.Survived.value_counts().plot(kind='bar')\n",
    "plt.title(\"获救情况（1为获救）\")\n",
    "plt.ylabel(\"人数\")\n",
    "\n",
    "plt.subplot(342)\n",
    "train.Pclass.value_counts().plot(kind='bar')\n",
    "plt.title(\"乘客等级分布\")\n",
    "plt.ylabel(\"人数\")\n",
    "\n",
    "plt.subplot(344)\n",
    "y=train.Age\n",
    "x=train.Survived\n",
    "plt.scatter(x,y)\n",
    "plt.title(\"按年龄看获救分布（1）为获救\")\n",
    "plt.ylabel(\"年龄\")\n",
    "\n",
    "plt.subplot(312)\n",
    "y=train.Age.value_counts()\n",
    "y.sort_index().plot(kind='bar')\n",
    "plt.xlabel(\"年龄\")\n",
    "plt.ylabel(\"人数\")\n",
    "plt.title(\"各年龄的乘客人数\")\n",
    "\n",
    "plt.subplot(313)\n",
    "train.Age[train.Pclass==1].plot(kind='kde')#密度图\n",
    "train.Age[train.Pclass==2].plot(kind='kde')\n",
    "train.Age[train.Pclass==3].plot(kind='kde')\n",
    "plt.xlabel(\"年龄\")\n",
    "plt.ylabel(\"密度\")\n",
    "plt.title(\"各等级的乘客年龄分布\")\n",
    "plt.legend(('头等舱','二等舱','三等舱'),loc='best')\n",
    "\n",
    "plt.subplot(343)\n",
    "train.Embarked.value_counts().plot(kind='bar')\n",
    "plt.title(\"各登船口岸上船人数\")\n",
    "plt.ylabel(\"人数\")  \n",
    "#subplots_adjust(wspace=0.5,hspace=1)#也可以调节各图形之间的间距\n",
    "fig.tight_layout()#自动调整各图形之间的间距\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Preprocessing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.ensemble import RandomForestRegressor\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from sklearn import preprocessing\n",
    "\n",
    "# 使用 RandomForestClassifier 填补缺失的年龄属性\n",
    "def set_missing_ages(df):\n",
    "    age_df=df[['Age','Fare','Parch','SibSp','Pclass']]\n",
    "    known_age=age_df[age_df.Age.notnull()].values\n",
    "    unknown_age=age_df[age_df.Age.isnull()].values\n",
    "    y=known_age[:,0]#第一列所有元素\n",
    "    x=known_age[:,1:]#分割出矩阵第二列以后的所有元素\n",
    "    rfr=RandomForestRegressor(random_state=0,n_estimators=2000,n_jobs=-1)\n",
    "    rfr.fit(x,y)\n",
    "    predictedAges=rfr.predict(unknown_age[:,1:])\n",
    "    df.loc[(df.Age.isnull()),'Age']=predictedAges#loc通过行标签来索引数据\n",
    "    return df\n",
    "\n",
    "def set_Cabin_type(df):\n",
    "    df.loc[ (df.Cabin.notnull()), 'Cabin' ] = \"Yes\"\n",
    "    df.loc[ (df.Cabin.isnull()), 'Cabin' ] = \"No\"\n",
    "    return df\n",
    "train = set_missing_ages(train)\n",
    "train = set_Cabin_type(train)\n",
    "train.to_csv('processed_data1.csv')#新文件夹没有空值\n",
    "dummies_Cabin=pd.get_dummies(train['Cabin'],prefix='Cabin')\n",
    "dummies_Embarked=pd.get_dummies(train['Embarked'],prefix='Embarked')\n",
    "dummies_Sex = pd.get_dummies(train['Sex'], prefix= 'Sex')\n",
    "dummies_Pclass = pd.get_dummies(train['Pclass'], prefix= 'Pclass')\n",
    "df = pd.concat([train, dummies_Cabin, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)#增加列属性,concat默认是增加行，axis=1为增加列\n",
    "df.drop(['Pclass', 'Name', 'Sex', 'Ticket', 'Cabin', 'Embarked'], axis=1, inplace=True)#drop为删除原来的列，axis=1为删除列\n",
    "df.to_csv('processed_data2.csv')#新文件夹的数据都为数值型,对原数据进行了特征因子化\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 12 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Pclass       891 non-null    int64  \n",
      " 3   Name         891 non-null    object \n",
      " 4   Sex          891 non-null    object \n",
      " 5   Age          891 non-null    float64\n",
      " 6   SibSp        891 non-null    int64  \n",
      " 7   Parch        891 non-null    int64  \n",
      " 8   Ticket       891 non-null    object \n",
      " 9   Fare         891 non-null    float64\n",
      " 10  Cabin        891 non-null    object \n",
      " 11  Embarked     889 non-null    object \n",
      "dtypes: float64(2), int64(5), object(5)\n",
      "memory usage: 83.7+ KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 891 entries, 0 to 890\n",
      "Data columns (total 16 columns):\n",
      " #   Column       Non-Null Count  Dtype  \n",
      "---  ------       --------------  -----  \n",
      " 0   PassengerId  891 non-null    int64  \n",
      " 1   Survived     891 non-null    int64  \n",
      " 2   Age          891 non-null    float64\n",
      " 3   SibSp        891 non-null    int64  \n",
      " 4   Parch        891 non-null    int64  \n",
      " 5   Fare         891 non-null    float64\n",
      " 6   Cabin_No     891 non-null    uint8  \n",
      " 7   Cabin_Yes    891 non-null    uint8  \n",
      " 8   Embarked_C   891 non-null    uint8  \n",
      " 9   Embarked_Q   891 non-null    uint8  \n",
      " 10  Embarked_S   891 non-null    uint8  \n",
      " 11  Sex_female   891 non-null    uint8  \n",
      " 12  Sex_male     891 non-null    uint8  \n",
      " 13  Pclass_1     891 non-null    uint8  \n",
      " 14  Pclass_2     891 non-null    uint8  \n",
      " 15  Pclass_3     891 non-null    uint8  \n",
      "dtypes: float64(2), int64(4), uint8(10)\n",
      "memory usage: 50.6 KB\n"
     ]
    }
   ],
   "source": [
    "df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "#将Age和Fare两个属性进行零——均值标准化。\n",
    "scale_age=(df['Age']-df['Age'].mean())/df['Age'].std()\n",
    "scale_fare=(df['Fare']-df['Fare'].mean())/df['Fare'].std()\n",
    "df.copy()\n",
    "df['Age']=scale_age\n",
    "df['Fare']=scale_fare\n",
    "df.to_csv('processed_data3.csv')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin_No</th>\n",
       "      <th>Cabin_Yes</th>\n",
       "      <th>Embarked_C</th>\n",
       "      <th>Embarked_Q</th>\n",
       "      <th>Embarked_S</th>\n",
       "      <th>Sex_female</th>\n",
       "      <th>Sex_male</th>\n",
       "      <th>Pclass_1</th>\n",
       "      <th>Pclass_2</th>\n",
       "      <th>Pclass_3</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.561065</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.502163</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0.612827</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.786404</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.267592</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.488580</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0.392722</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0.420494</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>0.392722</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.486064</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>886</th>\n",
       "      <td>887</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.194224</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.386454</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>887</th>\n",
       "      <td>888</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.781170</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.044356</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>888</th>\n",
       "      <td>889</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.987045</td>\n",
       "      <td>1</td>\n",
       "      <td>2</td>\n",
       "      <td>-0.176164</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>889</th>\n",
       "      <td>890</td>\n",
       "      <td>1</td>\n",
       "      <td>-0.267592</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.044356</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>890</th>\n",
       "      <td>891</td>\n",
       "      <td>0</td>\n",
       "      <td>0.172617</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>-0.492101</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>891 rows × 16 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     PassengerId  Survived       Age  SibSp  Parch      Fare  Cabin_No  \\\n",
       "0              1         0 -0.561065      1      0 -0.502163         1   \n",
       "1              2         1  0.612827      1      0  0.786404         0   \n",
       "2              3         1 -0.267592      0      0 -0.488580         1   \n",
       "3              4         1  0.392722      1      0  0.420494         0   \n",
       "4              5         0  0.392722      0      0 -0.486064         1   \n",
       "..           ...       ...       ...    ...    ...       ...       ...   \n",
       "886          887         0 -0.194224      0      0 -0.386454         1   \n",
       "887          888         1 -0.781170      0      0 -0.044356         0   \n",
       "888          889         0 -0.987045      1      2 -0.176164         1   \n",
       "889          890         1 -0.267592      0      0 -0.044356         0   \n",
       "890          891         0  0.172617      0      0 -0.492101         1   \n",
       "\n",
       "     Cabin_Yes  Embarked_C  Embarked_Q  Embarked_S  Sex_female  Sex_male  \\\n",
       "0            0           0           0           1           0         1   \n",
       "1            1           1           0           0           1         0   \n",
       "2            0           0           0           1           1         0   \n",
       "3            1           0           0           1           1         0   \n",
       "4            0           0           0           1           0         1   \n",
       "..         ...         ...         ...         ...         ...       ...   \n",
       "886          0           0           0           1           0         1   \n",
       "887          1           0           0           1           1         0   \n",
       "888          0           0           0           1           1         0   \n",
       "889          1           1           0           0           0         1   \n",
       "890          0           0           1           0           0         1   \n",
       "\n",
       "     Pclass_1  Pclass_2  Pclass_3  \n",
       "0           0         0         1  \n",
       "1           1         0         0  \n",
       "2           0         0         1  \n",
       "3           1         0         0  \n",
       "4           0         0         1  \n",
       "..        ...       ...       ...  \n",
       "886         0         1         0  \n",
       "887         1         0         0  \n",
       "888         0         0         1  \n",
       "889         1         0         0  \n",
       "890         0         0         1  \n",
       "\n",
       "[891 rows x 16 columns]"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对测试集进行同样的处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用模型 xgboost/RandomForest/ANN/SVM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
